#include "esp_log.h"
#include "esp_http_server.h"
#include "esp_system.h" // 包含esp_system.h以使用MIN函数
#include "ai_chat.h"

// 如果esp_system.h中没有定义MIN宏，则自定义MIN宏
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif

static const char *TAG = "AI_CHAT";

// 处理AI对话请求
esp_err_t chat_handler(httpd_req_t *req)
{
    ESP_LOGI(TAG, "收到AI对话请求");
    
    char buf[100];
    int ret, remaining = req->content_len;
    
    // 接收POST数据
    if ((ret = httpd_req_recv(req, buf, MIN(remaining, sizeof(buf)))) <= 0) {
        return ESP_FAIL;
    }
    buf[ret] = '\0';
    
    ESP_LOGI(TAG, "收到消息: %s", buf);
    
    // 简单的AI响应（这里只是示例，实际应该连接AI服务）
    const char* response = "您好！我是ESP32-CAM的AI助手。这是一个简单的回应示例。";
    
    // 发送JSON响应
    char json_response[200];
    snprintf(json_response, sizeof(json_response), "{\"response\": \"%s\"}", response);
    
    httpd_resp_set_type(req, "application/json");
    return httpd_resp_send(req, json_response, HTTPD_RESP_USE_STRLEN);
}